Trabalho prático 1

Compressão de imagens bmp no formato JPEG

Resultados e Conclusões

Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 281 x 500 281 x 500 281 x 500 281 x 500 281 x 500
Size (KB) 422KB 22KB 64KB 7KB 6KB ---
Compression Rate --- 94.79% 98,10% 98.34% 98,58% ---
Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 384 x 512 384 x 512 384 x 512 384 x 512 384 x 512
Size (KB) 577KB 142KB 24KB 16KB 11KB ---
Compression Rate --- 75.39% 95,85% 97,23% 98,09% ---
Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 297 x 400 297 x 400 297 x 400 297 x 400 297 x 400
Size (KB) 349KB 124KB 28KB 19KB 12KB ---
Compression Rate --- 64.47% 91.98% 94.56% 96.56% ---

A imagem logo.bmp, mesmo com uma qualidade alta (75%), já apresenta uma leve distorção no contorno das figuras e, à medida que a qualidade diminui, esta distorção vai ficando cada vez mais evidente. A razão pela qual podemos verificar ruído com uma taxa de compressão alta, deve-se ao facto de existir um elevado contraste entre as tonalidades das formas e o fundo (só existem três cores com apenas uma tonalidade cada uma).

Na imagem peppers.bmp, apenas começam a ser percetíveis perturbações a partir da qualidade média (50%). A razão para tal provém da imagem conter transições mais suaves em comparação com a imagem logo.bmp.

Por fim, na imagem barn_mountains.bmp, não existe uma discrepância da qualidade visual tão saliente entre todos os níveis de compressão visto que esta tem essencialmente transições suaves. No entanto, é possível distinguir-se algumas zonas pixelizadas quando a qualidade de compressão é baixa.

De modo geral, as imagens foto-realistas, como é o caso da peppers.bmp e da barn_mountains.bmp, conseguem alcançar maiores taxas de compressão sem grande perda percetual. Estes resultados encontram-se conforme o esperado, pois sabemos que o JPEG utiliza métodos de compressão pensados para imagens foto-realistas.

Funções auxiliares usadas ao longo do código

Imagem a usar ao longo do relatório

Colormaps

Padding

Modelo YCbCr

No modelo RGB, todos os canais contém luminância. Esta redundância é eliminada no modelo YCbCr, guardando a informação sobre a luminância apenas no canal Y. Os restantes canais, Cb e Cr, guardam a informação acerca da variação de azul e vermelho, respetivamente, relativamente à luma (crominância azul e crominância vermelha). Assim sendo, nos canais Cb e Cr é visível um menor detalhe que as torna mais propícias a maiores níveis de compressão.

Sub-amostragem

A função de downsampling foi aplicada apenas aos canais Cb e Cr da imagem, dado que as alterações efetuadas nestes canais não serão tão percetíveis ao olho humano. O canal Y mantém-se inalterado para não perder o detalhe da imagem (luminância).

Rácio 4:2:0

Como se pode observar, ao usar o rácio 4:2:0, ou seja, reduzindo o número de colunas e linhas para metade (passo de 2) dos canais Cb e Cr, conseguimos comprimir estes canais para 25% do seu tamanho original.

Ao utilizar interpolação quer no downsampling, quer no upsampling, é possível verificar que a imagem final se aproxima mais da original. Enquanto, sem interpolação, a imagem final não fica tão suave, notando-se até alguns "degraus", ou seja, perda de alguma informação, especialmente na imagem logo.bmp dado que apresenta maiores contrastes.

Rácio 4:2:2

#

Utilizando um rácio 4:2:2, reduzimos para metade o número de colunas dos canais Cb e Cr. Assim, consegue-se comprimir estes canais para 50% do seu tamanho original.

É ainda possível verificar que a utilização da interpolação tem o mesmo efeito que no rácio anterior.

Nas imagens foto-realistas, a perda de informação das sub-amostragens não é tão notória quando comparada com o mesmo tipo de sub-amostragem em imagens gráficas vetoriais.

Comparando os rácios 4:2:0 e 4:2:2, concluí-se que, como era expetável, o rácio 4:2:0 apresenta piores resultados visualmente que o rácio 4:2:2, quer com interpolação, quer sem interpolação. Porém, essas diferenças são mínimas, apenas se distinguindo mais quando se faz zoom das imagens.

Por fim, é também de realçar, que, para o mesmo rácio, a imagem, quer com ou sem interpolação, apresenta a mesma taxa de compressão após o downsampling.

Transformada Discreta do Cosseno (DCT)

DCT aplicada a toda a imagem

Ao utilizar a DCT, há uma compactação da energia num número menor de coeficientes. Por este motivo, poderá ser usado um algoritmo de compressão entrópica (RLE, por exemplo) para eliminar a redundância que existe nas altas frequências. Para aumentar, ainda mais, a redundância nestas frequências, poderá ser usado um processo de quantização para aproximar os valores (este processo vai levar à perda de informação).

DCT aplicada em blocos

Blocos 8x8

Em blocos 8x8, existe uma menor probabilidade de encontrar transições abruptas. Deste modo, ao aplicar a DCT a estes blocos, os valores AC tendem a aproximar-se de zero enquanto o valor DC se distingue mais desses devido à ausência de frequências altas. Como os valores AC são semelhantes e próximos de zero, consegue-se comprimir mais a imagem através de métodos entrópicos que tiram partido deste aspeto.

Blocos 64x64

Aumentando o tamanho dos blocos para 64x64, verifica-se que há mais probabilidade de apanhar transições abruptas na imagem do que em blocos 8x8. Assim, haverá mais discrepâncias entre os coeficientes AC dos blocos e, consequentemente, serão mais difíceis de comprimir com modelos entrópicos.

Quantização

Pela análise dos gráficos anteriores, verifica-se que, à medida que a qualidade diminui, os valores resultantes da aplicação da quantização aproximam-se cada vez mais de preto (valor 0). É ainda de notar que, com a diminuição da qualidade, a perda de informação aumenta, dado que o resultado da quantização torna a maioria dos coeficientes AC igual a zero, e como tal, impossíveis de recuperar. Como a redundância dos coeficientes AC aumenta com a diminuição da qualidade, a aplicação de modelos de compressão entrópicos torna-se mais eficaz e, assim, o potencial de compressão aumenta também.

Comparando com os resultados obtidos da aplicação da DCT em blocos 8x8 à imagem, é possível observar que as frequências altas desaparecem após a quantização. O facto de na DCT em blocos 8x8 existirem poucas frequências altas, torna a eliminação das mesmas pouco percetível para o olho humano.

Codificação DPCM dos coeficientes DC

Aos aplicar a DPCM por blocos 8x8, geralmente a diferença entre os coeficientes DC codificados de blocos adjacentes irá ser próximo de zero pois blocos adjacentes tendem a ser semelhantes, principalmente em imagens foto-realistas. Estes resultados irão possibilitar uma maior compressão, sobretudo ao aplicar métodos de compressão entrópica como RLE.

Reconstrução da imagem original

Encoder e decoder

Métricas de distorção das imagens

Resultados do encoder com interpolação e racio 4:2:2

Original 100% 75% 50% 25% 10%
Images
MSE -- 14.49 152.84 261.87 398.95 706.87
RMSE -- 3.81 12.36 16.18 19.97 26.59
SNR -- 35.57 25.34 23.01 21.18 18.69
PSNR -- 36.52 26.29 23.95 22.12 19.63
Original 100% 75% 50% 25% 10%
Images
MSE -- 10.90 51.08 77.76 126.31 278.71
RMSE -- 3.20 7.15 8.82 11.23 16.69
SNR -- 34.55 27.84 26.02 23.91 20.47
PSNR -- 37.76 31.05 29.22 27.12 23.68
Original 100% 75% 50% 25% 10%
Images
MSE -- 6.70 24.28 48.41 70.86 170.45
RMSE -- 2.59 4.93 6.96 8.41 13.06
SNR -- 43.07 37.48 34.48 32.83 29.02
PSNR -- 39.87 34.28 31.28 29.63 25.81

Numa análise quantitativa, pode-se observar que pela métrica MSE, que acentua mais as diferenças entre as imagens quando comparado com outras métricas, o erro cresce de forma quase linear até aos 25% e depois para 10% existe perda substancial de informação. Isto confirma a animação inicialmente criada para visualizar as diferentes imagens comprimidas com qualidade de 100 até 0. Nesta animação é possível verificar que a imagem vai perdendo pouca informação à medida que a qualidade diminiu, porém tem uma perda muito mais acentuada a partir da qualidade 25%-20%. As animações podem ser encontradas na pasta "imagens". com os seguintes nomes: barn-mountains.bmp.gif, peppers.bmp.gif e logo.bmp.gif

Pela visualização das imagens das diferenças para as várias qualidades, como era expectável, existe uma maior perda de informação para qualidades inferiores. Esta perda diminui à medida que aumentamos a qualidade de compressão.

Verifica-se em todas as imagens que, a partir da qualidade 75 para cima, quase não são visíveis perdas percetuais, podendo-se confirmar pela imagem das diferenças que se encontra quase toda preta. Para qualidades inferiores a 75, a perda é mais notória, sendo possível observar a formação de ruído principalmente próximo dos contornos. Em contraste, se fosse desenvolvido os restantes passos do JPEG, seria possível atingir taxas de compressão bastante elevadas, semelhantes às taxas obtidas pelo JPEG.